<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="./js/jquery.js"></script>
    <script>
        //deferred用来替代回调函数，类似Promise
        // 所有的$.返回的都是deferred对象
        // var def = $.ajax({
        //     url: "05_test.php"
        // })
        // // console.log(def);
        // //执行成功要干的事
        // def.done(function (res) {
        //     // console.log(res);
        // })
        // //失败的时候
        // def.fail(function (res) {
        //     // console.log(res);
        // })
        // //创建deferred
        // var def_ins = $.Deferred();
        // console.log(def_ins);

        // def_ins.done(function (res) {
        //     console.log(res);
        // })
        //因为状态太容易改变，所有要放在函数里，变成一个局部的变量
        function defFactory() {
            var def = $.Deferred()
            setTimeout(function () {
                console.log(1);
                def.resolve()
            }, 3000)
            //隐藏改变状态，让外部无法改变def的状态,==>promise起到关键作用
            return def.promise()
        }
        var def_ins = defFactory()
        def_ins.done(function () {
            console.log("状态改变了");
        })
        def_ins.fail(function () {
            console.log("出错了");
        })

    </script>
</body>

</html>